home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / program / swagd_f.zip / DATETIME.SWG / 0002_DATE1.PAS.pas < prev    next >
Pascal/Delphi Source File  |  1993-05-28  |  1KB  |  46 lines

  1. {
  2. I posted some routines on doing calendar math using Integers quite
  3. a While back. That gives you a relative date of about 89 years. Use
  4. LongInt For more. Avoids pulling in the Real lib that julian requires.
  5. Just making them up again as I Type them in the reader. There may be a
  6. typo or two.
  7. }
  8.  
  9. Function leapyear (c, y : Byte) : Boolean;
  10. begin
  11.   if (y and 3) <> 0 then
  12.           leapyear := False
  13.   else
  14.         if y <> 0 then
  15.           leapyear := True
  16.   else
  17.         if (c and 3) = 0 then
  18.           leapyear := True
  19.   else
  20.           leapyear := False;
  21. end;
  22.  
  23. Function DaysInMonth (c, y, m : Byte) : Integer;
  24. begin
  25.   if m = 2 then
  26.           if leapyear then
  27.                   DaysInMonth := 29
  28.     else
  29.                   DaysInMonth := 28
  30.   else
  31.           DaysInMonth := 30 + (($0AB5 shr m) and 1);
  32. end;
  33.  
  34. Function DaysInYear (c, y : Byte) : Integer;
  35. begin
  36.   DaysInYear := DaysInMonth(c, y, 2) + 337;
  37. end;
  38.  
  39. Function DayOfYear (c, y, m, d :Byte) : Integer;
  40. Var i, j : Integer;
  41. begin
  42.   j := d;
  43.     For i := 1 to pred(m) do
  44.                   j := j + DaysInMonth(c,y,i);
  45.   DayOfYear := j;
  46. end;